package com.jfinal.ext.config;

import org.jetbrains.annotations.NotNull;

import java.io.File;
import java.io.IOException;

/**
 * @author Timor
 * @version 1.0
 * @date 2022/11/21 17:26:05
 */
public interface IFileConfigProvider extends IConfigProvider {

    /**
     * 获取配置对应的文件
     * @param name 配置名
     * @return file
     */
    File getFile(@NotNull String name);

    /**
     * 获取配置对应的临时文件
     * @param name 配置名
     * @return file
     */
    default File getTempFile(@NotNull String name) {
        return new File(getFile(name).getAbsolutePath() + "~");
    }

    /**
     * 获取配置
     * @param name 配置名称
     * @return 配置文件内容
     * @throws IOException 读取配置异常
     */
    @Override
    String get(@NotNull String name) throws IOException;

    /**
     * 保存配置，保存流程：
     *   -> 将配置写入临时文件
     *   -> 重命名临时文件
     * @param name   配置名称
     * @param config 配置
     * @return 是否保存成功
     */
    @Override
    boolean save(@NotNull String name, @NotNull String config);

}
